package model

import (
	"chat_srv/basic/config"
	"gorm.io/gorm"
	"time"
)

// 用户关注表
type UserFollow struct {
	Id         uint      `gorm:"column:id;type:bigint UNSIGNED;comment:主键id;primaryKey;not null;" json:"id"`                        // 主键id
	FromUserId uint      `gorm:"column:from_user_id;type:bigint UNSIGNED;comment:关注者id;not null;" json:"from_user_id"`              // 关注者id
	ToUserId   uint      `gorm:"column:to_user_id;type:bigint UNSIGNED;comment:被关注者id;not null;" json:"to_user_id"`                 // 被关注者id
	Status     uint      `gorm:"column:status;type:tinyint UNSIGNED;comment:关注状态：1-已关注 2-已取消;default:1;" json:"status"`             // 关注状态：1-已关注 2-已取消
	CreatedAt  time.Time `gorm:"column:created_at;type:datetime(3);comment:关注创建时间;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 关注创建时间
}

// 设置与数据库映射
func (uf *UserFollow) TableName() string {
	return "user_follow"
}

// 关注用户
func (uf *UserFollow) Create(db *gorm.DB) error {
	return db.Create(&uf).Error
}

// 取消关注
func (uf *UserFollow) CancelFollow(db *gorm.DB, where *UserFollow) error {
	return db.
		Model(&uf).
		Where(where).
		Update("status", 2).Error
}

// 查询用户关注
func (uf *UserFollow) GetUserFollow(where *UserFollow) error {
	return config.DB.Where(where).Limit(1).Find(&uf).Error
}
